from flask import Flask, session, current_app
from info import create_app, db, models  # 导入目的在迁移的时候知道models存在,可以迁移
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager

# 根据传递不同配置的key,获取不同的配置类信息
from info.models import User

app = create_app("develop")

# 创建manager对象,管理app
manager = Manager(app)

# 使用migrate关联app,db
Migrate(app, db)

# 给manager添加操作命令
manager.add_command("db", MigrateCommand)


# 创建管理方法,通过flask_script模块提供的option装饰器
# 参数1: 表示传递的值   参数2: 用户说明参数1,  参数3: dest目标值用来传递形参的
@manager.option('-u', '--username', dest='username')
@manager.option('-p', '--password', dest='password')
def create_superuser(username, password):
    # 1.创建管理员用户
    admin = User()

    # 2.设置属性
    admin.nick_name = username
    admin.mobile = username
    admin.password = password
    admin.is_admin = True

    # 3.保存到数据库
    try:
        db.session.add(admin)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        return "创建失败"

    return "创建成功"


if __name__ == '__main__':
    manager.run()
